#pragma once

#include <QString>
#include <QSharedPointer>


namespace SignalSystem {
	/// <summary>
	/// 常规模拟
	/// </summary>
	struct ConventSimulation {
		QString modulationMode;  // 调制方式
		QString FMOffest;        // FM偏频
	};

	struct Link4AMS {
		QString TargetID;
		QString role;
	};
	struct Link4A {
		QVector<quint64> frequencies;  // 频率
		QVector<QSharedPointer<Link4AMS>> masterslave;     // 主从
	};


	struct Link11 {
		QVector<quint64> frequencies;
		QVector<QSharedPointer<Link4AMS>> masterslave;
		double frameLength;     // 帧长
		QString modulationMode;  // 单音 / 多音的调制方式区分
	};

	struct FrequencyHops {
		QVector<quint64> sketchyFrequencies;  // 粗同步
		QVector<quint64> exactFrequencies;  // 精同步
		QVector<quint64> dataFrequencies;  // 精同步

	};
	struct Link16 {
		QString workMode;        // 工作模式
		QString businessType;    // 业务类型
		QVector<QSharedPointer<Link4AMS>> roles;     // 网络角色
		QString frameFormatType; // 帧格式类型
		double pulseWidth;      // 脉冲宽度
		int carrierCenterOffset; // 载波中心偏移
		bool encrypted;        // 是否加密
		QSharedPointer<FrequencyHops> FreqPoints; // 频集
		QMap<QString, QStringList> TimeSlotNumberMap;  // 时隙号
	};

	struct TTNT {
		QVector<quint64> frequencies;      // 频集
		QString rateMode;        // 速率模式
	};

	struct HAVEQUICK {
		QString modelType;       // 型号类型
		QString jumpSpeedMode;   // 跳速模式
		bool encrypted;        // 是否加密
		QVector<quint64> frequencies;      // 频率集
	};

	struct SINCGARS {
		QVector<quint64> fixedFrequencyHopps; // 定频/跳频
		QVector<quint64> frequencies;         // 频率集
	};

	struct EPLRS {
		QString waveMode;          // 波形模式
	};

	struct UV {
		QString modulationMode;  // 调制方式
		double jumpSpeed;       // 跳速
	};

	/// <summary>
	/// 171电台
	/// </summary>
	struct radioStation171 {
		QVector<quint64> frequencies;      // 频集
		QString orificeSpeed;    // 空口速率
		double jumpSpeed;       // 跳速
	};

}